// // 引入express模块
const express = require("express")
const app = express();
const path = require("path");

//处理body请求体的中间件
// app.use()这个是可以接收所有请求，express.urlencoded()这个是上面的一个方法，是用来接收表单的
// express.json()是用来接收json的
app.use(express.urlencoded())
app.use(express.json())



  //查询学生信息接口
app.get("/user", (req, res) => {
  
  const token = req.headers.token;
  // console.log(req.headers, "headers");
  if (!token) {
    return res.send({
      code: 10002,
      msg: "没有权限",
      data: null
    })
  }

  // console.log(req.query);
  const {
    userId
  // req.query是输入框的数据赋值
  } = req.query;


  //如果查询失败
  // if (userId !== "001") {
  //   return res.send({
  //     code: 10001,
  //     msg: "查询失败",
  //     data: null
  //   })
  // }


  //查询成功 响应
  res.send({
    code: 10000,
    msg: "查询成功",
    data: {
      name: "小明",
      age: 18,
      sex: "男"
    }
  })

})
// 定义一个延迟响应的请求接口
app.get("/userLazy", (req, res) => {
  setTimeout(()=>{
    // 注意headers要有s ,否则数据出不来
    const token =req.headers.token;
    console.log(token,"token");
    if(!token){
      return res.send({
        code:10002,
        msg:"没有权限",
        data:null
      })
    }
  
  
  const {
    userId
  } = req.query;


  //如果查询失败
  if (userId !== "001") {
    return res.send({
      code: 10001,
      msg: "查询失败",
      data: null
    })
  }


  //查询成功 响应
  res.send({
    code: 10000,
    msg: "查询成功",
    data: {
      name: "小明",
      age: 18,
      sex: "男"
    }
  })
},3000)
})
app.post("/adduser", (req, res) => {
  console.log("adduser");
  console.log(req.body, "req.body");
  console.log(req.query, "req.query");
  const {
    name,
    age,
    sex
  } = req.body;
// 取返
  if (!name || !age || !sex) {
    return res.send({
      code: 10001,
      mes: "添加失败",
      data: null
    })
  }

  res.send({
    code: 10000,
    mes: "添加成功",
    data: null
  })
})

// put的请求是接受更新
// /updateuser这个是用户数据名字是随便乱写的
  app.put("/updateuse", (req, res) => {
    const {
      userId,
      age,
      sex
    } = req.body;
  
    console.log(userId, age, sex, "更新");
  
    res.send({
      code: 10000,
      mes: "更新成功",
      data: null
    })
  })
  
  app.delete("/deleteuser", (req, res) => {
    const {
      userId
    } = req.query;
    console.log(userId, "删除");
  
    res.send({
      code: 10000,
      mes: "删除成功",
      data: null
    })
  })




//静态资源部署接口
// / path.resolve拼接路径的意思  __dirname是用来动态获取当前文件所属目录的绝对路径
app.get("/1", (req, res) => {
  const filePath = path.resolve(__dirname, "./1.axios的基础使用.html");
  res.sendFile(filePath);
})

app.get("/2", (req, res) => {
  const filePath = path.resolve(__dirname, "./axios请求别名.html");
  res.sendFile(filePath);
})

app.get("/3", (req, res) => {
  const filePath = path.resolve(__dirname, "./3.创建axios实例.html");
  // 把文件直接写出来
  res.sendFile(filePath);
})

app.get("/4", (req, res) => {
  const filePath = path.resolve(__dirname, "./4.响应拦截器.html");
  // 把文件直接写出来
  res.sendFile(filePath);
})

app.get("/5", (req, res) => {
  const filePath = path.resolve(__dirname, "./5.响应拦截器.html");
  // 把文件直接写出来
  res.sendFile(filePath);
})

app.get("/6", (req, res) => {
  const filePath = path.resolve(__dirname, "./6.拦截器的练习.html");
  // 把文件直接写出来
  res.sendFile(filePath);
})

app.get("/7", (req, res) => {
  const filePath = path.resolve(__dirname, "./7.取消请求.html");
  // 把文件直接写出来
  res.sendFile(filePath);
})

// 绑定事件
app.listen(8090, () => {
  console.log("服务器请求成功 请访问 http://127.0.0.1:8090");
})